iterative KJ method